package it.polimi.politics.ejb.entities;

import it.polimi.politics.dto.PartitoDTO;

import java.io.Serializable;

import javax.persistence.*;

import java.util.List;


/**
 * The persistent class for the partito database table.
 * 
 */

@Entity
@NamedQueries({
@NamedQuery(name="Partito.findAll", query="SELECT p FROM Partito p"),
@NamedQuery(name="Partito.FindByPartito", query="SELECT g FROM Partito g where g.idpartito = :idpartito"),})
public class Partito implements Serializable {
	private static final long serialVersionUID = 1L;
	 public static final String FIND_ALL = "Partito.findAll";
	 
	 public static final String FIND_BY_PARTITO = "Partito.FindByPartito";
	 
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int idpartito;

	@Lob
	private byte[] logo;

	private String nome;

	@Lob
	private String programma;

	//bi-directional many-to-one association to Candidatura
	@OneToMany(mappedBy="partito")
	private List<Candidatura> candidaturas;

	//bi-directional many-to-one association to Utenti
	@OneToMany(mappedBy="partito")
	private List<Utenti> utentis;

	//bi-directional many-to-one association to Voto
	@OneToMany(mappedBy="partito")
	private List<Voto> votos;

	public Partito() {
	}

	public Partito(PartitoDTO partito) {
		
		this.idpartito = partito.getIDPartito();
		this.nome	   = partito.getNome();
		this.programma = partito.getProgramma();
		this.logo	   = partito.getLogo();
	}

	public int getIdpartito() {
		return this.idpartito;
	}

	public void setIdpartito(int idpartito) {
		this.idpartito = idpartito;
	}

	public byte[] getLogo() {
		return this.logo;
	}

	public void setLogo(byte[] logo) {
		this.logo = logo;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getProgramma() {
		return this.programma;
	}

	public void setProgramma(String programma) {
		this.programma = programma;
	}

	public List<Candidatura> getCandidaturas() {
		return this.candidaturas;
	}

	public void setCandidaturas(List<Candidatura> candidaturas) {
		this.candidaturas = candidaturas;
	}

	public Candidatura addCandidatura(Candidatura candidatura) {
		getCandidaturas().add(candidatura);
		candidatura.setPartito(this);

		return candidatura;
	}

	public Candidatura removeCandidatura(Candidatura candidatura) {
		getCandidaturas().remove(candidatura);
		candidatura.setPartito(null);

		return candidatura;
	}

	public List<Utenti> getUtentis() {
		return this.utentis;
	}

	public void setUtentis(List<Utenti> utentis) {
		this.utentis = utentis;
	}

	public Utenti addUtenti(Utenti utenti) {
		getUtentis().add(utenti);
		utenti.setPartito(this);

		return utenti;
	}

	public Utenti removeUtenti(Utenti utenti) {
		getUtentis().remove(utenti);
		utenti.setPartito(null);

		return utenti;
	}

	public List<Voto> getVotos() {
		return this.votos;
	}

	public void setVotos(List<Voto> votos) {
		this.votos = votos;
	}

	public Voto addVoto(Voto voto) {
		getVotos().add(voto);
		voto.setPartito(this);

		return voto;
	}

	public Voto removeVoto(Voto voto) {
		getVotos().remove(voto);
		voto.setPartito(null);

		return voto;
	}

}